/**
 *
 */
package de.cbf.cam.dsa.services.interfaces.rcp_provider;

import de.cbf.cam.dsa.rcp.model.entities.CultureDSA;
import de.cbf.cam.dsa.rcp.model.entities.ProfessionDSA;
import de.cbf.cam.dsa.rcp.model.entities.RaceDSA;
import de.cbf.cam.dsa.rcp.model.entities.StructureData;
import de.cbf.cam.dsa.services.interfaces.rcp_provider.exceptions.ProfessionNotFoundException;
import de.cbf.cam.dsa.services.interfaces.rcp_provider.exceptions.RaceNotFoundException;
import de.cbf.util.uuidheader.util.EntityWeightedList;


/**
 * @author Alti
 *
 */
public interface IServiceDSAProviderRCPStructure {

	public static final Double USUAL_CULTURE_WEIGHT 	= 30D;
	public static final Double POSSIBLE_CULTURE_WEIGHT 	=  1D;

	/**
	 * get display name
	 * @return
	 */
	public String getName();

	public EntityWeightedList provideRacesByCulture(CultureDSA culture);

	public EntityWeightedList provideCulturesByRace(RaceDSA race);


	public EntityWeightedList provideCulturesByProfession(
			ProfessionDSA profession);

	public EntityWeightedList provideProfessionsByCulture(CultureDSA culture);


	public EntityWeightedList provideRacesByProfession(ProfessionDSA profession)
			throws RaceNotFoundException;

	public EntityWeightedList provideProfessionsByRace(RaceDSA race)
			throws ProfessionNotFoundException;

	public void persistStructure(StructureData entity);
}
